package com.ztstudy.poi.controller;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelGenerator {
    public static void main(String[] args) {
        // 创建一个 XSSFWorkbook 对象 (Excel 2007+ 格式)
        Workbook workbook = new XSSFWorkbook();

        // 创建一个工作表
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建标题行
        Row headerRow = sheet.createRow(0);  // 第一行（索引从 0 开始）
        headerRow.createCell(0).setCellValue("ID");      // 第一列
        headerRow.createCell(1).setCellValue("Name");    // 第二列
        headerRow.createCell(2).setCellValue("Age");     // 第三列

        // 创建数据行
        Object[][] data = {
            {1, "Alice", 30},
            {2, "Bob", 25},
            {3, "Charlie", 35},
            {4, "David", 40}
        };

        // 填充数据
        int rowNum = 1;  // 从第二行开始填充数据
        for (Object[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            for (int colNum = 0; colNum < rowData.length; colNum++) {
                row.createCell(colNum).setCellValue(rowData[colNum].toString());
            }
        }

        // 设置自动列宽，避免文本被截断
        for (int i = 0; i < headerRow.getPhysicalNumberOfCells(); i++) {
            sheet.autoSizeColumn(i);
        }

        sheet.addMergedRegion(new CellRangeAddress(1, 5, 0, 0)); // 合并从第 0 行到第 2 行，第 0 列到第 1 列


        // 输出文件
        try (FileOutputStream fileOut = new FileOutputStream("D:/Code/JavaCode/poi-study/poi/src/main/resources/template/example.xlsx")) {
            workbook.write(fileOut);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();  // 关闭工作簿
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        System.out.println("Excel 文件生成成功！");
    }
}
